﻿#ifndef CIRCUITELEMENT_H
#define CIRCUITELEMENT_H

#include <QVector>
#include <QFile>
#include <QtXml/qdom.h>

#include "baseelement.h"
#include "pin.h"

//Базовый класс для элементов, совершающих работу
class CircuitElement : public BaseElement
{
    Q_OBJECT   

protected:

    //Служебный конструктор без загрузки конфигурации
    CircuitElement();

    // Создать элемент цепи
    explicit CircuitElement(uint pins_count);
    virtual ~CircuitElement();

    // Создает PIN-элементы со свойствами, характерными данному элементу
    virtual Pin* createSpecialPIN();

public:
    // =========== Fields =========

    // Пины элемента
    QVector<Pin*> pins;

    // =========== Methods =========

    // Привести элемент в исходное состояние
    void refresh();

    //Разрушить все подключения
    void disconnectAll();

    // Найти пин по имени
    Pin* getPINByName(const QString& name);

    //Вывести информацию об элементе и пинах
    QString getInfo();
};

#endif // CIRCUITELEMENT_H
